package com.bawei.mall.product.service;

import java.util.HashMap;
import java.util.List;

import com.bawei.mall.product.domain.MallProductAddrInfo;
import com.bawei.mall.product.domain.MallProductInfo;
import com.bawei.mall.product.domain.MallProductInfoNew;
import com.bawei.mall.product.domain.MallProductUserInfo;
import com.bawei.mall.product.domain.reponse.ProductDetailsNewResponse;
import com.bawei.mall.product.domain.reponse.ProductDetailsResponse;
import com.bawei.mall.product.domain.reponse.ProductInfoResponse;
import com.bawei.mall.product.domain.request.ProductInfoRequest;

/**
 * 商品信息Service接口
 *
 * @author DongZeLiang
 * @date 2022-09-19
 */
public interface IMallProductInfoService
{
    /**
     * 查询商品信息
     *
     * @param id 商品信息主键
     * @return 商品信息
     */
    public ProductInfoResponse selectMallProductInfoById(Long id);
    public ProductDetailsResponse selectProductDetailsById(Long id);

    /**
     * 查询商品信息列表
     *
     * @param mallProductInfo 商品信息
     * @return 商品信息集合
     */
    public List<MallProductInfo> selectMallProductInfoList(MallProductInfo mallProductInfo);

    /**
     * 新增商品信息
     *
     * @param productInfoRequest 商品信息
     * @return 结果
     */
    public int insertMallProductInfo(ProductInfoRequest productInfoRequest);

    /**
     * 修改商品信息
     *
     * @param productInfoRequest 商品信息
     * @return 结果
     */
    public int updateMallProductInfo(ProductInfoRequest productInfoRequest);

    /**
     * 批量删除商品信息
     *
     * @param ids 需要删除的商品信息主键集合
     * @return 结果
     */
    public int deleteMallProductInfoByIds(Long[] ids);

    /**
     * 删除商品信息信息
     *
     * @param id 商品信息主键
     * @return 结果
     */
    public int deleteMallProductInfoById(Long id);

    /**
     * 查询商品总条数
     * @param mallProductInfo 商品查询
     * @return
     */
    Long selectMallProductInfoCount (MallProductInfo mallProductInfo);

    void uploadInfo(Long id, boolean isUpload);

    /**
     * 加载商品数据到ES中
     */
    void loadingProductInfoToEs();


    void updStatus(MallProductInfo mallProductInfo);


    /**
     * 猜你喜欢列表
     * @return
     */
    List<MallProductInfoNew> guessYouLike(Integer pageNum, Integer pageSize);

    /**
     * 根据品牌ID查询商品
     */
    List<MallProductInfoNew> productInfoByBrandId(Integer brandId);

    /**
     * 商品详情界面
     * @param id
     * @return
     */
    ProductDetailsNewResponse detail(Long id);
//    HashMap<String, Object> detail(Long id);



    /**
     * 查询用户有没有关注这个品牌
     * @param brandId
     * @return
     */
    MallProductUserInfo selectMallProductUserInfo(Integer brandId);

    /**
     * 添加关注
     * @param mallProductUserInfo
     */
    void addCollection(MallProductUserInfo mallProductUserInfo);

    /**
     * 取消关注
     * @param brandId
     */
    void deleteCollection(Integer brandId);

    /**
     * 查询地址列表
     * @return
     */
    List<MallProductAddrInfo> fetchAddressList();

    /**
     * 地址解析
     * @param address
     * @return
     */
    MallProductAddrInfo analyzeAddress(String address);


    /**
     * 添加地址
     * @param mallProductAddrInfo
     */
    void addAddress(MallProductAddrInfo mallProductAddrInfo);

    /**
     * 查询关注列表
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<MallProductUserInfo> selectMallProductUserInfoList(Integer pageNum, Integer pageSize);

    /**
     * 根据关键字查询商品
     *
     * @param keyword
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<MallProductInfoNew> search(String keyword, Integer pageNum, Integer pageSize);

    /**
     * 清空关注列表
     */
    void clear();

    /**
     * 人气推荐列表
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<MallProductInfoNew> hotProductList(Integer pageNum, Integer pageSize);





}
